.. now that it is one.
return NULL;
}
- color = _gtk_css_parser_read_symbolic_color (parser);
+ color = _gtk_symbolic_color_new_take_value (_gtk_css_symbolic_value_new (parser));
if (color == NULL)
{
gtk_gradient_unref (gradient);
do {
GtkCssImageLinearColorStop stop;
- GtkSymbolicColor *symbolic;
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
+ stop.color = _gtk_css_symbolic_value_new (parser);
+ if (stop.color == NULL)
return FALSE;
if (_gtk_css_parser_has_number (parser))
| GTK_CSS_PARSE_LENGTH);
if (stop.offset == NULL)
{
- gtk_symbolic_color_unref (symbolic);
+ _gtk_css_value_unref (stop.color);
return FALSE;
}
}
stop.offset = NULL;
}
- stop.color = _gtk_css_value_new_take_symbolic_color (symbolic);
g_array_append_val (linear->stops, stop);
} while (_gtk_css_parser_try (parser, ",", TRUE));
copy->angle = _gtk_css_number_value_compute (linear->angle, context);
- fallback = _gtk_css_value_new_take_symbolic_color (gtk_symbolic_color_new_literal (&transparent));
+ fallback = _gtk_css_symbolic_value_new_take_symbolic_color (gtk_symbolic_color_new_literal (&transparent));
g_array_set_size (copy->stops, linear->stops->len);
for (i = 0; i < linear->stops->len; i++)
{
static gboolean
parse_color_definition (GtkCssScanner *scanner)
{
- GtkSymbolicColor *symbolic;
+ GtkCssValue *symbolic;
char *name;
gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
return TRUE;
}
- symbolic = _gtk_css_parser_read_symbolic_color (scanner->parser);
+ symbolic = _gtk_css_symbolic_value_new (scanner->parser);
if (symbolic == NULL)
{
g_free (name);
if (!_gtk_css_parser_try (scanner->parser, ";", TRUE))
{
g_free (name);
- gtk_symbolic_color_unref (symbolic);
+ _gtk_css_value_unref (symbolic);
gtk_css_provider_error_literal (scanner->provider,
scanner,
GTK_CSS_PROVIDER_ERROR,
}
GtkCssValue *
-_gtk_css_rgba_value_compute_from_symbolic (GtkCssValue *rgba,
+_gtk_css_rgba_value_compute_from_symbolic (GtkCssValue *symbolic,
GtkCssValue *fallback,
GtkStyleContext *context,
gboolean for_color_property)
{
- GtkSymbolicColor *symbolic;
GtkCssValue *resolved, *current;
- g_return_val_if_fail (rgba != NULL, NULL);
+ g_return_val_if_fail (symbolic != NULL, NULL);
/* The computed value of the ‘currentColor’ keyword is the computed
* value of the ‘color’ property. If the ‘currentColor’ keyword is
GtkCssValue * _gtk_css_rgba_value_new_from_rgba (const GdkRGBA *rgba);
GtkCssValue * _gtk_css_rgba_value_compute_from_symbolic
- (GtkCssValue *rgba,
+ (GtkCssValue *symbolic,
GtkCssValue *fallback,
GtkStyleContext *context,
gboolean for_color_property);
}
else if (values[COLOR] == NULL)
{
- GtkSymbolicColor *symbolic;
+ values[COLOR] = _gtk_css_symbolic_value_new (parser);
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
+ if (values[COLOR] == NULL)
goto fail;
-
- values[COLOR] = _gtk_css_value_new_take_symbolic_color (symbolic);
}
else
{
while (values[HOFFSET] == NULL || !value_is_done_parsing (parser));
if (values[COLOR] == NULL)
- values[COLOR] = _gtk_css_value_new_take_symbolic_color (
+ values[COLOR] = _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ()));
GtkCssValue *color;
color = _gtk_css_rgba_value_compute_from_symbolic (shadow->color,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ())),
context,
GtkCssParser *parser,
GFile *base)
{
- GtkSymbolicColor *symbolic;
guint i;
for (i = 0; i < 4; i++)
{
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
+ values[i] = _gtk_css_symbolic_value_new (parser);
+ if (values[i] == NULL)
return FALSE;
- values[i] = _gtk_css_value_new_take_symbolic_color (symbolic);
-
if (value_is_done_parsing (parser))
break;
}
}
else if (values[2] == NULL)
{
- GtkSymbolicColor *symbolic;
-
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
+ values[2] = _gtk_css_symbolic_value_new (parser);
+ if (values[2] == NULL)
return FALSE;
-
- values[2] = _gtk_css_value_new_take_symbolic_color (symbolic);
}
}
while (!value_is_done_parsing (parser));
}
else if (!G_IS_VALUE (&values[8]))
{
- GtkSymbolicColor *symbolic;
-
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
+ values[8] = _gtk_css_symbolic_value_new (parser);
+ if (values[8] == NULL)
return FALSE;
- values[8] = _gtk_css_value_new_take_symbolic_color (symbolic);
values[9] = _gtk_css_value_ref (values[8]);
values[10] = _gtk_css_value_ref (values[8]);
values[11] = _gtk_css_value_ref (values[8]);
}
else if (values[4] == NULL)
{
- GtkSymbolicColor *symbolic;
-
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
+ values[4] = _gtk_css_symbolic_value_new (parser);
+ if (values[4] == NULL)
return FALSE;
-
- values[4] = _gtk_css_value_new_take_symbolic_color (symbolic);
}
else
{
GtkSymbolicColor *symbolic;
GdkRGBA rgba;
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
+ symbolic = _gtk_symbolic_color_new_take_value (_gtk_css_symbolic_value_new (parser));
if (symbolic == NULL)
return FALSE;
if (_gtk_css_value_holds (specified, GTK_TYPE_SYMBOLIC_COLOR))
{
- GtkSymbolicColor *symbolic = _gtk_css_value_get_symbolic_color (specified);
+ GtkSymbolicColor *symbolic = _gtk_css_value_get_boxed (specified);
GdkRGBA rgba;
- if (symbolic == _gtk_symbolic_color_get_current_color ())
- rgba = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
- else if (!gtk_symbolic_color_resolve (symbolic, NULL, &rgba))
+ if (!_gtk_style_context_resolve_color (context, symbolic, &rgba))
rgba = white;
return _gtk_css_value_new_from_boxed (GDK_TYPE_RGBA, &rgba);
GtkSymbolicColor *symbolic;
GdkRGBA rgba;
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
+ symbolic = _gtk_symbolic_color_new_take_value (_gtk_css_symbolic_value_new (parser));
if (symbolic == NULL)
return FALSE;
if (_gtk_css_value_holds (specified, GTK_TYPE_SYMBOLIC_COLOR))
{
if (_gtk_style_context_resolve_color (context,
- _gtk_css_value_get_symbolic_color (specified),
+ _gtk_css_value_get_boxed (specified),
&rgba))
{
color.red = rgba.red * 65535. + 0.5;
{
GtkSymbolicColor *symbolic;
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
+ symbolic = _gtk_symbolic_color_new_take_value (_gtk_css_symbolic_value_new (parser));
if (symbolic == NULL)
return FALSE;
GtkCssParser *parser,
GFile *base)
{
- GtkSymbolicColor *symbolic;
-
- symbolic = _gtk_css_parser_read_symbolic_color (parser);
- if (symbolic == NULL)
- return NULL;
-
- return _gtk_css_value_new_take_symbolic_color (symbolic);
+ return _gtk_css_symbolic_value_new (parser);
}
static GtkCssValue *
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_new_rgba (1, 1, 1, 1)));
gtk_css_style_property_register ("font-size",
GTK_CSS_PROPERTY_FONT_SIZE,
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_new_rgba (0, 0, 0, 0)));
gtk_css_style_property_register ("font-family",
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ())));
gtk_css_style_property_register ("border-right-color",
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ())));
gtk_css_style_property_register ("border-bottom-color",
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ())));
gtk_css_style_property_register ("border-left-color",
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ())));
gtk_css_style_property_register ("outline-color",
color_query,
color_assign,
NULL,
- _gtk_css_value_new_take_symbolic_color (
+ _gtk_css_symbolic_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
_gtk_symbolic_color_get_current_color ())));
GtkCssValue *_gtk_css_value_new_from_boxed (GType type,
gpointer boxed);
GtkCssValue *_gtk_css_value_new_from_color (const GdkColor *v);
-GtkCssValue *_gtk_css_value_new_take_symbolic_color (GtkSymbolicColor *v);
GtkCssValue *_gtk_css_value_new_take_pattern (cairo_pattern_t *v);
GtkCssValue *_gtk_css_value_new_take_binding_sets (GPtrArray *array);
void _gtk_css_value_init_gvalue (const GtkCssValue *value,
gpointer _gtk_css_value_get_object (const GtkCssValue *value);
gpointer _gtk_css_value_get_boxed (const GtkCssValue *value);
const char ** _gtk_css_value_get_strv (const GtkCssValue *value);
-GtkSymbolicColor *_gtk_css_value_get_symbolic_color (const GtkCssValue *value);
GtkGradient *_gtk_css_value_get_gradient (const GtkCssValue *value);
G_END_DECLS
GtkCssValue *
_gtk_style_context_resolve_color_value (GtkStyleContext *context,
GtkCssValue *current,
- GtkSymbolicColor *color)
+ GtkCssValue *color)
{
g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), FALSE);
g_return_val_if_fail (current != NULL, FALSE);
g_return_val_if_fail (color != NULL, FALSE);
- return _gtk_symbolic_color_resolve_full (color,
+ return _gtk_symbolic_color_resolve_full ((GtkSymbolicColor *) color,
current,
gtk_style_context_color_lookup_func,
context);
GdkRGBA *result);
GtkCssValue * _gtk_style_context_resolve_color_value (GtkStyleContext *context,
GtkCssValue *current,
- GtkSymbolicColor *color);
+ GtkCssValue *color);
void _gtk_style_context_get_cursor_color (GtkStyleContext *context,
GdkRGBA *primary_color,
GdkRGBA *secondary_color);
COLOR_WIN32
} ColorParseType;
+static GtkSymbolicColor * gtk_css_parser_read_symbolic_color (GtkCssParser *parser);
+
static GtkSymbolicColor *
gtk_css_parser_read_symbolic_color_function (GtkCssParser *parser,
ColorParseType color)
}
else
{
- child1 = _gtk_css_parser_read_symbolic_color (parser);
+ child1 = gtk_css_parser_read_symbolic_color (parser);
if (child1 == NULL)
return NULL;
return NULL;
}
- child2 = _gtk_css_parser_read_symbolic_color (parser);
+ child2 = gtk_css_parser_read_symbolic_color (parser);
if (child2 == NULL)
{
gtk_symbolic_color_unref (child1);
return symbolic;
}
-GtkSymbolicColor *
-_gtk_css_parser_read_symbolic_color (GtkCssParser *parser)
+static GtkSymbolicColor *
+gtk_css_parser_read_symbolic_color (GtkCssParser *parser)
{
GtkSymbolicColor *symbolic;
GdkRGBA rgba;
GTK_WIN32_THEME_SYMBOLIC_COLOR_NAME};
char *name;
- g_return_val_if_fail (parser != NULL, NULL);
-
if (_gtk_css_parser_try (parser, "currentColor", TRUE))
return gtk_symbolic_color_ref (_gtk_symbolic_color_get_current_color ());
return NULL;
}
+GtkCssValue *
+_gtk_css_symbolic_value_new (GtkCssParser *parser)
+{
+ g_return_val_if_fail (parser != NULL, NULL);
+
+ return _gtk_css_symbolic_value_new_take_symbolic_color (gtk_css_parser_read_symbolic_color (parser));
+}
+
GtkSymbolicColor * _gtk_symbolic_color_get_current_color (void);
-GtkSymbolicColor * _gtk_css_parser_read_symbolic_color (GtkCssParser *parser);
+GtkCssValue * _gtk_css_symbolic_value_new (GtkCssParser *parser);
+
+/* I made these inline functions instead of macros to gain type safety for the arguments passed in. */
+static inline GtkSymbolicColor *
+_gtk_symbolic_color_new_take_value (GtkCssValue *value)
+{
+ return (GtkSymbolicColor *) value;
+}
+
+static inline GtkCssValue *
+_gtk_css_symbolic_value_new_take_symbolic_color (GtkSymbolicColor *color)
+{
+ return (GtkCssValue *) color;
+}
G_END_DECLS